{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-08-03T05:47:39.289401Z",
     "start_time": "2019-08-03T05:47:37.543695Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['user_app_actived.csv',\n",
       " 'age_train.csv',\n",
       " 'age_test.csv',\n",
       " 'app_info.csv',\n",
       " 'train_data.csv',\n",
       " 'user_basic_info.csv',\n",
       " 'user_app_usage.csv',\n",
       " 'user_behavior_info.csv']"
      ]
     },
     "execution_count": 1,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import os\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "from tqdm import *\n",
    "from sklearn.decomposition import LatentDirichletAllocation\n",
    "from sklearn.metrics import accuracy_score\n",
    "import time\n",
    "from sklearn.feature_extraction.text import TfidfTransformer\n",
    "from sklearn.feature_extraction.text import CountVectorizer\n",
    "from sklearn.feature_extraction.text import TfidfVectorizer\n",
    "from scipy.sparse import hstack\n",
    "from sklearn.model_selection import StratifiedKFold\n",
    "from gensim.models import FastText, Word2Vec\n",
    "import re\n",
    "import random as rn\n",
    "import gc\n",
    "import logging\n",
    "os.environ['PYTHONHASHSEED'] = '0'\n",
    "np.random.seed(1017)\n",
    "path=\"data/\"\n",
    "os.listdir(\"data/\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-08-03T05:47:39.300364Z",
     "start_time": "2019-08-03T05:47:39.291138Z"
    }
   },
   "outputs": [],
   "source": [
    "# 读入数据（需加速）\n",
    "def get_age_data():\n",
    "    train_data = pd.read_csv(path + 'age_train.csv', header=None)\n",
    "    test_data = pd.read_csv(path + 'age_test.csv', header=None)\n",
    "    data = pd.concat([train_data, test_data], axis=0, sort=False).fillna(-1)\n",
    "    data.columns = ['uId', 'age_group']\n",
    "    return data\n",
    "\n",
    "def get_user_app_actived():\n",
    "    data = pd.read_csv(path + 'user_app_actived.csv', header=None)\n",
    "    data.columns = ['uId', 'appId']\n",
    "    return data\n",
    "\n",
    "def get_user_behavior_info():\n",
    "    data = pd.read_csv(path + 'user_behavior_info.csv', header=None)\n",
    "    data.columns = ['uId', 'bootTimes', 'AFuncTimes', 'BFuncTimes', 'CFuncTimes',\n",
    "                   'DFuncTimes', 'EFuncTimes', 'FFuncTimes', 'FFuncSum']\n",
    "    return data\n",
    "\n",
    "def get_user_basic_info():\n",
    "    data = pd.read_csv(path + 'user_basic_info.csv', header=None)\n",
    "    data.columns = ['uId', 'gender', 'city', 'prodName', 'ramCapacity', \n",
    "                   'ramLeftRation', 'romCapacity', 'romLeftRation', 'color',\n",
    "                   'fontSize', 'ct', 'carrier', 'os']\n",
    "    return data\n",
    "\n",
    "def get_app_info():\n",
    "    data = pd.read_csv(path + 'app_info.csv', header=None)\n",
    "    data.columns = ['appId', 'category']\n",
    "    return data\n",
    "\n",
    "# 测试的时候用True\n",
    "# 提特征改用False\n",
    "def get_user_app_usage(less_data=False):\n",
    "    if less_data:\n",
    "        reader = pd.read_csv(path + 'user_app_usage.csv', chunksize=2000000)\n",
    "        for i in reader:\n",
    "            data = i\n",
    "            break\n",
    "    else:\n",
    "        data = pd.read_csv(path + 'user_app_usage.csv', header=None)\n",
    "    data.columns = ['uId', 'appId', 'duration', 'times', 'use_date']\n",
    "    return data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "id_label_data = get_age_data()\n",
    "tqdm.pandas('获取特征')\n",
    "# 行为特征\n",
    "data = get_user_behavior_info()\n",
    "data = pd.merge(id_label_data, data, on='uId', how='left')\n",
    "import warnings\n",
    "warnings.filterwarnings(\"ignore\")\n",
    "feature = pd.DataFrame()\n",
    "for i in data.columns:\n",
    "    if i not in ['age_group', 'uId']:\n",
    "        feature[i] = data[i]\n",
    "feature.to_csv('feature/f1.csv', index=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 5000000/5000000 [00:06<00:00, 729419.23it/s]\n",
      "100%|██████████| 5000000/5000000 [00:06<00:00, 728946.94it/s]\n",
      "100%|██████████| 5000000/5000000 [00:04<00:00, 1138312.35it/s]\n",
      "100%|██████████| 5000000/5000000 [00:05<00:00, 888918.69it/s]\n",
      "100%|██████████| 5000000/5000000 [00:07<00:00, 661803.69it/s]\n",
      "100%|██████████| 5000000/5000000 [00:07<00:00, 637683.47it/s]\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>gender</th>\n",
       "      <th>ramCapacity</th>\n",
       "      <th>ramLeftRation</th>\n",
       "      <th>romCapacity</th>\n",
       "      <th>romLeftRation</th>\n",
       "      <th>fontSize</th>\n",
       "      <th>os</th>\n",
       "      <th>city</th>\n",
       "      <th>prodName</th>\n",
       "      <th>color</th>\n",
       "      <th>color_length</th>\n",
       "      <th>color_last</th>\n",
       "      <th>ct</th>\n",
       "      <th>carrier</th>\n",
       "      <th>os_1</th>\n",
       "      <th>os_2</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>3.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>34.0</td>\n",
       "      <td>0.89</td>\n",
       "      <td>1.30001</td>\n",
       "      <td>0.944444</td>\n",
       "      <td>0.776163</td>\n",
       "      <td>0.807018</td>\n",
       "      <td>0.991453</td>\n",
       "      <td>3</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>9</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>0.29</td>\n",
       "      <td>68.0</td>\n",
       "      <td>0.64</td>\n",
       "      <td>1.30001</td>\n",
       "      <td>0.888889</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.701754</td>\n",
       "      <td>0.914530</td>\n",
       "      <td>2</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.833333</td>\n",
       "      <td>2</td>\n",
       "      <td>8</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1</td>\n",
       "      <td>4.0</td>\n",
       "      <td>0.24</td>\n",
       "      <td>64.0</td>\n",
       "      <td>0.34</td>\n",
       "      <td>1.00000</td>\n",
       "      <td>0.888889</td>\n",
       "      <td>0.912791</td>\n",
       "      <td>0.956140</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>3</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1</td>\n",
       "      <td>8</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>0.26</td>\n",
       "      <td>137.0</td>\n",
       "      <td>0.67</td>\n",
       "      <td>1.00000</td>\n",
       "      <td>0.944444</td>\n",
       "      <td>0.950581</td>\n",
       "      <td>0.947368</td>\n",
       "      <td>0.957265</td>\n",
       "      <td>3</td>\n",
       "      <td>0.888889</td>\n",
       "      <td>0.833333</td>\n",
       "      <td>0</td>\n",
       "      <td>9</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>0.45</td>\n",
       "      <td>34.0</td>\n",
       "      <td>0.49</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.888889</td>\n",
       "      <td>0.465116</td>\n",
       "      <td>0.473684</td>\n",
       "      <td>0.965812</td>\n",
       "      <td>2</td>\n",
       "      <td>0.944444</td>\n",
       "      <td>0.500000</td>\n",
       "      <td>0</td>\n",
       "      <td>8</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>1</td>\n",
       "      <td>6.0</td>\n",
       "      <td>0.36</td>\n",
       "      <td>128.0</td>\n",
       "      <td>0.77</td>\n",
       "      <td>1.30001</td>\n",
       "      <td>0.944444</td>\n",
       "      <td>0.950581</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.905983</td>\n",
       "      <td>3</td>\n",
       "      <td>0.944444</td>\n",
       "      <td>0.833333</td>\n",
       "      <td>2</td>\n",
       "      <td>9</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>0.32</td>\n",
       "      <td>68.0</td>\n",
       "      <td>0.71</td>\n",
       "      <td>1.30001</td>\n",
       "      <td>0.888889</td>\n",
       "      <td>0.648256</td>\n",
       "      <td>0.692982</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>3</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1</td>\n",
       "      <td>8</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>0.44</td>\n",
       "      <td>16.0</td>\n",
       "      <td>0.54</td>\n",
       "      <td>1.15000</td>\n",
       "      <td>0.777778</td>\n",
       "      <td>0.382267</td>\n",
       "      <td>0.403509</td>\n",
       "      <td>0.760684</td>\n",
       "      <td>3</td>\n",
       "      <td>0.666667</td>\n",
       "      <td>0.833333</td>\n",
       "      <td>0</td>\n",
       "      <td>6</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>0.53</td>\n",
       "      <td>16.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.777778</td>\n",
       "      <td>0.869186</td>\n",
       "      <td>0.657895</td>\n",
       "      <td>0.965812</td>\n",
       "      <td>2</td>\n",
       "      <td>0.944444</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>6</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>128.0</td>\n",
       "      <td>0.84</td>\n",
       "      <td>1.15000</td>\n",
       "      <td>0.944444</td>\n",
       "      <td>0.296512</td>\n",
       "      <td>0.491228</td>\n",
       "      <td>0.555556</td>\n",
       "      <td>3</td>\n",
       "      <td>0.888889</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1</td>\n",
       "      <td>9</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>0.44</td>\n",
       "      <td>64.0</td>\n",
       "      <td>0.83</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.777778</td>\n",
       "      <td>0.962209</td>\n",
       "      <td>0.631579</td>\n",
       "      <td>0.837607</td>\n",
       "      <td>3</td>\n",
       "      <td>0.944444</td>\n",
       "      <td>0.833333</td>\n",
       "      <td>0</td>\n",
       "      <td>6</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>0.36</td>\n",
       "      <td>4.0</td>\n",
       "      <td>0.76</td>\n",
       "      <td>1.30001</td>\n",
       "      <td>0.944444</td>\n",
       "      <td>0.619186</td>\n",
       "      <td>0.894737</td>\n",
       "      <td>0.991453</td>\n",
       "      <td>3</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>9</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>0.50</td>\n",
       "      <td>64.0</td>\n",
       "      <td>0.29</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.888889</td>\n",
       "      <td>0.994186</td>\n",
       "      <td>0.877193</td>\n",
       "      <td>0.897436</td>\n",
       "      <td>3</td>\n",
       "      <td>0.944444</td>\n",
       "      <td>0.500000</td>\n",
       "      <td>0</td>\n",
       "      <td>8</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>0.45</td>\n",
       "      <td>16.0</td>\n",
       "      <td>0.29</td>\n",
       "      <td>1.30001</td>\n",
       "      <td>0.777778</td>\n",
       "      <td>0.851744</td>\n",
       "      <td>0.657895</td>\n",
       "      <td>0.965812</td>\n",
       "      <td>2</td>\n",
       "      <td>0.944444</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>6</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>0</td>\n",
       "      <td>8.0</td>\n",
       "      <td>0.36</td>\n",
       "      <td>128.0</td>\n",
       "      <td>0.59</td>\n",
       "      <td>1.30001</td>\n",
       "      <td>0.944444</td>\n",
       "      <td>0.531977</td>\n",
       "      <td>0.780702</td>\n",
       "      <td>0.820513</td>\n",
       "      <td>3</td>\n",
       "      <td>0.500000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1</td>\n",
       "      <td>9</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>0.32</td>\n",
       "      <td>64.0</td>\n",
       "      <td>0.67</td>\n",
       "      <td>1.30000</td>\n",
       "      <td>0.944444</td>\n",
       "      <td>0.561047</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.623932</td>\n",
       "      <td>3</td>\n",
       "      <td>0.722222</td>\n",
       "      <td>0.833333</td>\n",
       "      <td>2</td>\n",
       "      <td>9</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>0.47</td>\n",
       "      <td>64.0</td>\n",
       "      <td>0.67</td>\n",
       "      <td>1.30001</td>\n",
       "      <td>0.888889</td>\n",
       "      <td>0.997093</td>\n",
       "      <td>0.815789</td>\n",
       "      <td>0.957265</td>\n",
       "      <td>3</td>\n",
       "      <td>0.888889</td>\n",
       "      <td>0.500000</td>\n",
       "      <td>0</td>\n",
       "      <td>8</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>0</td>\n",
       "      <td>8.0</td>\n",
       "      <td>0.43</td>\n",
       "      <td>128.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1.15000</td>\n",
       "      <td>0.944444</td>\n",
       "      <td>0.578488</td>\n",
       "      <td>0.763158</td>\n",
       "      <td>0.991453</td>\n",
       "      <td>3</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>9</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>0.36</td>\n",
       "      <td>32.0</td>\n",
       "      <td>0.46</td>\n",
       "      <td>1.30000</td>\n",
       "      <td>0.777778</td>\n",
       "      <td>0.840116</td>\n",
       "      <td>0.263158</td>\n",
       "      <td>0.606838</td>\n",
       "      <td>3</td>\n",
       "      <td>0.944444</td>\n",
       "      <td>0.833333</td>\n",
       "      <td>0</td>\n",
       "      <td>6</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>1</td>\n",
       "      <td>4.0</td>\n",
       "      <td>0.35</td>\n",
       "      <td>68.0</td>\n",
       "      <td>0.49</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.888889</td>\n",
       "      <td>0.732558</td>\n",
       "      <td>0.903509</td>\n",
       "      <td>0.777778</td>\n",
       "      <td>3</td>\n",
       "      <td>0.944444</td>\n",
       "      <td>0.833333</td>\n",
       "      <td>3</td>\n",
       "      <td>8</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20</th>\n",
       "      <td>1</td>\n",
       "      <td>8.0</td>\n",
       "      <td>0.31</td>\n",
       "      <td>256.0</td>\n",
       "      <td>0.86</td>\n",
       "      <td>1.30000</td>\n",
       "      <td>0.944444</td>\n",
       "      <td>0.997093</td>\n",
       "      <td>0.500000</td>\n",
       "      <td>0.863248</td>\n",
       "      <td>2</td>\n",
       "      <td>0.722222</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1</td>\n",
       "      <td>9</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>21</th>\n",
       "      <td>0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>0.21</td>\n",
       "      <td>128.0</td>\n",
       "      <td>0.62</td>\n",
       "      <td>1.15000</td>\n",
       "      <td>0.944444</td>\n",
       "      <td>0.994186</td>\n",
       "      <td>0.912281</td>\n",
       "      <td>0.923077</td>\n",
       "      <td>3</td>\n",
       "      <td>0.833333</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>2</td>\n",
       "      <td>9</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>22</th>\n",
       "      <td>0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>0.38</td>\n",
       "      <td>16.0</td>\n",
       "      <td>0.59</td>\n",
       "      <td>1.00000</td>\n",
       "      <td>0.777778</td>\n",
       "      <td>0.706395</td>\n",
       "      <td>0.657895</td>\n",
       "      <td>0.965812</td>\n",
       "      <td>2</td>\n",
       "      <td>0.944444</td>\n",
       "      <td>0.833333</td>\n",
       "      <td>1</td>\n",
       "      <td>6</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>23</th>\n",
       "      <td>0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>0.31</td>\n",
       "      <td>128.0</td>\n",
       "      <td>0.69</td>\n",
       "      <td>1.00000</td>\n",
       "      <td>0.722222</td>\n",
       "      <td>0.805233</td>\n",
       "      <td>0.342105</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>3</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1</td>\n",
       "      <td>8</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>24</th>\n",
       "      <td>0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>0.54</td>\n",
       "      <td>16.0</td>\n",
       "      <td>0.88</td>\n",
       "      <td>1.30001</td>\n",
       "      <td>0.722222</td>\n",
       "      <td>0.784884</td>\n",
       "      <td>0.833333</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>3</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.500000</td>\n",
       "      <td>0</td>\n",
       "      <td>8</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25</th>\n",
       "      <td>0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>0.28</td>\n",
       "      <td>8.0</td>\n",
       "      <td>0.29</td>\n",
       "      <td>1.30001</td>\n",
       "      <td>0.611111</td>\n",
       "      <td>0.982558</td>\n",
       "      <td>0.307018</td>\n",
       "      <td>0.863248</td>\n",
       "      <td>2</td>\n",
       "      <td>0.722222</td>\n",
       "      <td>0.333333</td>\n",
       "      <td>0</td>\n",
       "      <td>5</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>26</th>\n",
       "      <td>0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>4.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.722222</td>\n",
       "      <td>0.398256</td>\n",
       "      <td>0.964912</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>3</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>2</td>\n",
       "      <td>8</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>27</th>\n",
       "      <td>0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>0.53</td>\n",
       "      <td>16.0</td>\n",
       "      <td>0.22</td>\n",
       "      <td>1.00000</td>\n",
       "      <td>0.611111</td>\n",
       "      <td>0.116279</td>\n",
       "      <td>0.114035</td>\n",
       "      <td>0.914530</td>\n",
       "      <td>2</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.833333</td>\n",
       "      <td>0</td>\n",
       "      <td>5</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>28</th>\n",
       "      <td>0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>0.30</td>\n",
       "      <td>64.0</td>\n",
       "      <td>0.36</td>\n",
       "      <td>1.30001</td>\n",
       "      <td>0.722222</td>\n",
       "      <td>0.997093</td>\n",
       "      <td>0.456140</td>\n",
       "      <td>0.957265</td>\n",
       "      <td>3</td>\n",
       "      <td>0.888889</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>2</td>\n",
       "      <td>8</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>29</th>\n",
       "      <td>0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>0.33</td>\n",
       "      <td>64.0</td>\n",
       "      <td>0.39</td>\n",
       "      <td>1.30001</td>\n",
       "      <td>0.888889</td>\n",
       "      <td>0.822674</td>\n",
       "      <td>0.350877</td>\n",
       "      <td>0.794872</td>\n",
       "      <td>3</td>\n",
       "      <td>0.666667</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>8</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4999970</th>\n",
       "      <td>1</td>\n",
       "      <td>6.0</td>\n",
       "      <td>0.31</td>\n",
       "      <td>68.0</td>\n",
       "      <td>0.74</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.944444</td>\n",
       "      <td>0.901163</td>\n",
       "      <td>0.885965</td>\n",
       "      <td>0.905983</td>\n",
       "      <td>3</td>\n",
       "      <td>0.944444</td>\n",
       "      <td>0.833333</td>\n",
       "      <td>2</td>\n",
       "      <td>9</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4999971</th>\n",
       "      <td>1</td>\n",
       "      <td>3.0</td>\n",
       "      <td>0.57</td>\n",
       "      <td>32.0</td>\n",
       "      <td>0.23</td>\n",
       "      <td>1.15000</td>\n",
       "      <td>0.888889</td>\n",
       "      <td>0.686047</td>\n",
       "      <td>0.929825</td>\n",
       "      <td>0.794872</td>\n",
       "      <td>3</td>\n",
       "      <td>0.666667</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>8</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4999972</th>\n",
       "      <td>0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>0.36</td>\n",
       "      <td>137.0</td>\n",
       "      <td>0.70</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.944444</td>\n",
       "      <td>0.703488</td>\n",
       "      <td>0.982456</td>\n",
       "      <td>0.717949</td>\n",
       "      <td>3</td>\n",
       "      <td>0.611111</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>2</td>\n",
       "      <td>9</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4999973</th>\n",
       "      <td>1</td>\n",
       "      <td>4.0</td>\n",
       "      <td>0.36</td>\n",
       "      <td>64.0</td>\n",
       "      <td>0.23</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.888889</td>\n",
       "      <td>0.924419</td>\n",
       "      <td>0.815789</td>\n",
       "      <td>0.974359</td>\n",
       "      <td>3</td>\n",
       "      <td>0.944444</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1</td>\n",
       "      <td>8</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4999974</th>\n",
       "      <td>1</td>\n",
       "      <td>4.0</td>\n",
       "      <td>0.47</td>\n",
       "      <td>64.0</td>\n",
       "      <td>0.32</td>\n",
       "      <td>1.00000</td>\n",
       "      <td>0.833333</td>\n",
       "      <td>0.997093</td>\n",
       "      <td>0.631579</td>\n",
       "      <td>0.931624</td>\n",
       "      <td>3</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.833333</td>\n",
       "      <td>1</td>\n",
       "      <td>7</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4999975</th>\n",
       "      <td>0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>128.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.944444</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.561404</td>\n",
       "      <td>0.940171</td>\n",
       "      <td>3</td>\n",
       "      <td>0.888889</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>9</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4999976</th>\n",
       "      <td>0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>0.62</td>\n",
       "      <td>64.0</td>\n",
       "      <td>0.33</td>\n",
       "      <td>1.00000</td>\n",
       "      <td>0.888889</td>\n",
       "      <td>0.953488</td>\n",
       "      <td>0.929825</td>\n",
       "      <td>0.974359</td>\n",
       "      <td>3</td>\n",
       "      <td>0.944444</td>\n",
       "      <td>0.666667</td>\n",
       "      <td>1</td>\n",
       "      <td>8</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4999977</th>\n",
       "      <td>0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>0.49</td>\n",
       "      <td>64.0</td>\n",
       "      <td>0.62</td>\n",
       "      <td>1.00000</td>\n",
       "      <td>0.888889</td>\n",
       "      <td>0.994186</td>\n",
       "      <td>0.938596</td>\n",
       "      <td>0.888889</td>\n",
       "      <td>3</td>\n",
       "      <td>0.944444</td>\n",
       "      <td>0.833333</td>\n",
       "      <td>2</td>\n",
       "      <td>8</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4999978</th>\n",
       "      <td>1</td>\n",
       "      <td>6.0</td>\n",
       "      <td>0.24</td>\n",
       "      <td>68.0</td>\n",
       "      <td>0.07</td>\n",
       "      <td>0.85000</td>\n",
       "      <td>0.944444</td>\n",
       "      <td>0.985465</td>\n",
       "      <td>0.885965</td>\n",
       "      <td>0.777778</td>\n",
       "      <td>3</td>\n",
       "      <td>0.944444</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1</td>\n",
       "      <td>9</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4999979</th>\n",
       "      <td>0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>34.0</td>\n",
       "      <td>0.21</td>\n",
       "      <td>1.00000</td>\n",
       "      <td>0.888889</td>\n",
       "      <td>0.095930</td>\n",
       "      <td>0.605263</td>\n",
       "      <td>0.965812</td>\n",
       "      <td>2</td>\n",
       "      <td>0.944444</td>\n",
       "      <td>0.833333</td>\n",
       "      <td>0</td>\n",
       "      <td>8</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4999980</th>\n",
       "      <td>1</td>\n",
       "      <td>6.0</td>\n",
       "      <td>0.23</td>\n",
       "      <td>68.0</td>\n",
       "      <td>0.23</td>\n",
       "      <td>1.00000</td>\n",
       "      <td>0.944444</td>\n",
       "      <td>0.686047</td>\n",
       "      <td>0.991228</td>\n",
       "      <td>0.923077</td>\n",
       "      <td>3</td>\n",
       "      <td>0.833333</td>\n",
       "      <td>0.833333</td>\n",
       "      <td>3</td>\n",
       "      <td>9</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4999981</th>\n",
       "      <td>1</td>\n",
       "      <td>8.0</td>\n",
       "      <td>0.42</td>\n",
       "      <td>128.0</td>\n",
       "      <td>0.87</td>\n",
       "      <td>1.00000</td>\n",
       "      <td>0.666667</td>\n",
       "      <td>0.441860</td>\n",
       "      <td>0.315789</td>\n",
       "      <td>0.316239</td>\n",
       "      <td>3</td>\n",
       "      <td>0.611111</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>9</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4999982</th>\n",
       "      <td>0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>0.31</td>\n",
       "      <td>34.0</td>\n",
       "      <td>0.38</td>\n",
       "      <td>1.30001</td>\n",
       "      <td>0.888889</td>\n",
       "      <td>0.651163</td>\n",
       "      <td>0.543860</td>\n",
       "      <td>0.957265</td>\n",
       "      <td>3</td>\n",
       "      <td>0.888889</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>2</td>\n",
       "      <td>8</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4999983</th>\n",
       "      <td>1</td>\n",
       "      <td>3.0</td>\n",
       "      <td>0.50</td>\n",
       "      <td>32.0</td>\n",
       "      <td>0.10</td>\n",
       "      <td>1.00000</td>\n",
       "      <td>0.833333</td>\n",
       "      <td>0.732558</td>\n",
       "      <td>0.482456</td>\n",
       "      <td>0.965812</td>\n",
       "      <td>2</td>\n",
       "      <td>0.944444</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>7</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4999984</th>\n",
       "      <td>0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>0.35</td>\n",
       "      <td>68.0</td>\n",
       "      <td>0.45</td>\n",
       "      <td>1.00000</td>\n",
       "      <td>0.944444</td>\n",
       "      <td>0.924419</td>\n",
       "      <td>0.947368</td>\n",
       "      <td>0.606838</td>\n",
       "      <td>3</td>\n",
       "      <td>0.944444</td>\n",
       "      <td>0.666667</td>\n",
       "      <td>2</td>\n",
       "      <td>9</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4999985</th>\n",
       "      <td>0</td>\n",
       "      <td>8.0</td>\n",
       "      <td>0.39</td>\n",
       "      <td>512.0</td>\n",
       "      <td>0.57</td>\n",
       "      <td>1.00000</td>\n",
       "      <td>0.944444</td>\n",
       "      <td>0.543605</td>\n",
       "      <td>0.728070</td>\n",
       "      <td>0.923077</td>\n",
       "      <td>3</td>\n",
       "      <td>0.833333</td>\n",
       "      <td>0.833333</td>\n",
       "      <td>0</td>\n",
       "      <td>9</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4999986</th>\n",
       "      <td>0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>0.30</td>\n",
       "      <td>64.0</td>\n",
       "      <td>0.20</td>\n",
       "      <td>1.00000</td>\n",
       "      <td>0.888889</td>\n",
       "      <td>0.915698</td>\n",
       "      <td>0.640351</td>\n",
       "      <td>0.888889</td>\n",
       "      <td>3</td>\n",
       "      <td>0.944444</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>2</td>\n",
       "      <td>8</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4999987</th>\n",
       "      <td>0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>4.0</td>\n",
       "      <td>0.57</td>\n",
       "      <td>0.85000</td>\n",
       "      <td>0.944444</td>\n",
       "      <td>0.997093</td>\n",
       "      <td>0.789474</td>\n",
       "      <td>0.957265</td>\n",
       "      <td>3</td>\n",
       "      <td>0.888889</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>9</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4999988</th>\n",
       "      <td>1</td>\n",
       "      <td>6.0</td>\n",
       "      <td>0.25</td>\n",
       "      <td>64.0</td>\n",
       "      <td>0.33</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.888889</td>\n",
       "      <td>0.973837</td>\n",
       "      <td>0.798246</td>\n",
       "      <td>0.803419</td>\n",
       "      <td>3</td>\n",
       "      <td>0.944444</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>2</td>\n",
       "      <td>8</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4999989</th>\n",
       "      <td>0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>0.30</td>\n",
       "      <td>64.0</td>\n",
       "      <td>0.65</td>\n",
       "      <td>1.00000</td>\n",
       "      <td>0.888889</td>\n",
       "      <td>0.531977</td>\n",
       "      <td>0.938596</td>\n",
       "      <td>0.829060</td>\n",
       "      <td>3</td>\n",
       "      <td>0.777778</td>\n",
       "      <td>0.833333</td>\n",
       "      <td>0</td>\n",
       "      <td>8</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4999990</th>\n",
       "      <td>1</td>\n",
       "      <td>6.0</td>\n",
       "      <td>0.21</td>\n",
       "      <td>137.0</td>\n",
       "      <td>0.39</td>\n",
       "      <td>1.00000</td>\n",
       "      <td>0.944444</td>\n",
       "      <td>0.970930</td>\n",
       "      <td>0.991228</td>\n",
       "      <td>0.923077</td>\n",
       "      <td>3</td>\n",
       "      <td>0.833333</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>9</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4999991</th>\n",
       "      <td>0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>0.26</td>\n",
       "      <td>68.0</td>\n",
       "      <td>0.13</td>\n",
       "      <td>1.00000</td>\n",
       "      <td>0.944444</td>\n",
       "      <td>0.523256</td>\n",
       "      <td>0.947368</td>\n",
       "      <td>0.957265</td>\n",
       "      <td>3</td>\n",
       "      <td>0.888889</td>\n",
       "      <td>0.833333</td>\n",
       "      <td>0</td>\n",
       "      <td>9</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4999992</th>\n",
       "      <td>1</td>\n",
       "      <td>2.0</td>\n",
       "      <td>0.40</td>\n",
       "      <td>16.0</td>\n",
       "      <td>0.34</td>\n",
       "      <td>1.00000</td>\n",
       "      <td>0.833333</td>\n",
       "      <td>0.453488</td>\n",
       "      <td>0.482456</td>\n",
       "      <td>0.726496</td>\n",
       "      <td>2</td>\n",
       "      <td>0.666667</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>7</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4999993</th>\n",
       "      <td>1</td>\n",
       "      <td>8.0</td>\n",
       "      <td>0.38</td>\n",
       "      <td>128.0</td>\n",
       "      <td>0.81</td>\n",
       "      <td>1.00000</td>\n",
       "      <td>0.944444</td>\n",
       "      <td>0.688953</td>\n",
       "      <td>0.197368</td>\n",
       "      <td>0.709402</td>\n",
       "      <td>3</td>\n",
       "      <td>0.888889</td>\n",
       "      <td>0.833333</td>\n",
       "      <td>1</td>\n",
       "      <td>9</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4999994</th>\n",
       "      <td>0</td>\n",
       "      <td>8.0</td>\n",
       "      <td>0.41</td>\n",
       "      <td>256.0</td>\n",
       "      <td>0.61</td>\n",
       "      <td>1.00000</td>\n",
       "      <td>0.944444</td>\n",
       "      <td>0.159884</td>\n",
       "      <td>0.500000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>3</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>9</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4999995</th>\n",
       "      <td>1</td>\n",
       "      <td>4.0</td>\n",
       "      <td>0.31</td>\n",
       "      <td>68.0</td>\n",
       "      <td>0.55</td>\n",
       "      <td>1.00000</td>\n",
       "      <td>0.888889</td>\n",
       "      <td>0.694767</td>\n",
       "      <td>0.710526</td>\n",
       "      <td>0.811966</td>\n",
       "      <td>3</td>\n",
       "      <td>0.722222</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1</td>\n",
       "      <td>8</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4999996</th>\n",
       "      <td>0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>0.54</td>\n",
       "      <td>128.0</td>\n",
       "      <td>0.57</td>\n",
       "      <td>1.00000</td>\n",
       "      <td>0.944444</td>\n",
       "      <td>0.671512</td>\n",
       "      <td>0.912281</td>\n",
       "      <td>0.820513</td>\n",
       "      <td>3</td>\n",
       "      <td>0.500000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>9</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4999997</th>\n",
       "      <td>0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>0.35</td>\n",
       "      <td>128.0</td>\n",
       "      <td>0.80</td>\n",
       "      <td>1.00000</td>\n",
       "      <td>0.944444</td>\n",
       "      <td>0.930233</td>\n",
       "      <td>0.912281</td>\n",
       "      <td>0.940171</td>\n",
       "      <td>3</td>\n",
       "      <td>0.888889</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1</td>\n",
       "      <td>9</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4999998</th>\n",
       "      <td>0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>0.42</td>\n",
       "      <td>128.0</td>\n",
       "      <td>0.61</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.944444</td>\n",
       "      <td>0.976744</td>\n",
       "      <td>0.570175</td>\n",
       "      <td>0.572650</td>\n",
       "      <td>3</td>\n",
       "      <td>0.666667</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>9</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4999999</th>\n",
       "      <td>0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>0.38</td>\n",
       "      <td>64.0</td>\n",
       "      <td>0.23</td>\n",
       "      <td>1.00000</td>\n",
       "      <td>0.888889</td>\n",
       "      <td>0.412791</td>\n",
       "      <td>0.938596</td>\n",
       "      <td>0.829060</td>\n",
       "      <td>3</td>\n",
       "      <td>0.777778</td>\n",
       "      <td>0.833333</td>\n",
       "      <td>2</td>\n",
       "      <td>8</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5000000 rows × 16 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "         gender  ramCapacity  ramLeftRation  romCapacity  romLeftRation  \\\n",
       "0             1          3.0            NaN         34.0           0.89   \n",
       "1             0          4.0           0.29         68.0           0.64   \n",
       "2             1          4.0           0.24         64.0           0.34   \n",
       "3             0          4.0           0.26        137.0           0.67   \n",
       "4             0          3.0           0.45         34.0           0.49   \n",
       "...         ...          ...            ...          ...            ...   \n",
       "4999995       1          4.0           0.31         68.0           0.55   \n",
       "4999996       0          6.0           0.54        128.0           0.57   \n",
       "4999997       0          6.0           0.35        128.0           0.80   \n",
       "4999998       0          6.0           0.42        128.0           0.61   \n",
       "4999999       0          4.0           0.38         64.0           0.23   \n",
       "\n",
       "         fontSize        os      city  prodName     color  color_length  \\\n",
       "0         1.30001  0.944444  0.776163  0.807018  0.991453             3   \n",
       "1         1.30001  0.888889  1.000000  0.701754  0.914530             2   \n",
       "2         1.00000  0.888889  0.912791  0.956140  1.000000             3   \n",
       "3         1.00000  0.944444  0.950581  0.947368  0.957265             3   \n",
       "4             NaN  0.888889  0.465116  0.473684  0.965812             2   \n",
       "...           ...       ...       ...       ...       ...           ...   \n",
       "4999995   1.00000  0.888889  0.694767  0.710526  0.811966             3   \n",
       "4999996   1.00000  0.944444  0.671512  0.912281  0.820513             3   \n",
       "4999997   1.00000  0.944444  0.930233  0.912281  0.940171             3   \n",
       "4999998       NaN  0.944444  0.976744  0.570175  0.572650             3   \n",
       "4999999   1.00000  0.888889  0.412791  0.938596  0.829060             3   \n",
       "\n",
       "         color_last        ct  carrier  os_1  os_2  \n",
       "0          1.000000  1.000000        0     9     1  \n",
       "1          1.000000  0.833333        2     8     0  \n",
       "2          1.000000  1.000000        1     8     0  \n",
       "3          0.888889  0.833333        0     9     1  \n",
       "4          0.944444  0.500000        0     8     0  \n",
       "...             ...       ...      ...   ...   ...  \n",
       "4999995    0.722222  1.000000        1     8     0  \n",
       "4999996    0.500000  1.000000        0     9     1  \n",
       "4999997    0.888889  1.000000        1     9     1  \n",
       "4999998    0.666667  1.000000        0     9     1  \n",
       "4999999    0.777778  0.833333        2     8     0  \n",
       "\n",
       "[5000000 rows x 16 columns]"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "id_label_data = get_age_data()\n",
    "tqdm.pandas('获取特征')\n",
    "# 用户基础特征\n",
    "data = get_user_basic_info()\n",
    "data = pd.merge(id_label_data, data, on='uId', how='left')\n",
    "import warnings\n",
    "warnings.filterwarnings(\"ignore\")\n",
    "feature = data[['gender', 'ramCapacity', 'ramLeftRation', 'romCapacity', 'romLeftRation', 'fontSize', 'os']]\n",
    "feature['city'] = data['city'].fillna(-1).progress_apply(lambda row:int(str(row).split('c')[-1]))\n",
    "feature['prodName'] = data['prodName'].fillna(-1).progress_apply(lambda row:int(str(row).split('p')[-1]))\n",
    "from sklearn.preprocessing import LabelEncoder\n",
    "feature['color'] = LabelEncoder().fit_transform(data['color'])\n",
    "feature['color_length'] = data['color'].progress_apply(lambda row:len(row))\n",
    "def get_color(row):\n",
    "    if row[-1] == '色':\n",
    "        if len(row) == 3:\n",
    "            return row[1:]\n",
    "        return row\n",
    "    else:\n",
    "        return row[-1] + str('色')\n",
    "data['color_deal'] = data['color'].progress_apply(lambda row:get_color(row))\n",
    "data['color_deal'] = data['color_deal'].replace('母色', '光色').replace('境色', '光色').replace('版色', '光色').replace('槟色', '橘色').replace('翠色', '绿色').replace('蝶色', '粉色')\n",
    "feature['color_last'] = LabelEncoder().fit_transform(data['color_deal'])\n",
    "feature['ct'] = LabelEncoder().fit_transform(data['ct'].fillna('无'))\n",
    "feature['carrier'] = LabelEncoder().fit_transform(data['carrier'])\n",
    "feature['os'] = data['os']\n",
    "feature['os_1'] = data['os'].fillna(-1).progress_apply(lambda row:int(str(row).split('.')[0]))\n",
    "feature['os_2'] = data['os'].fillna(-1).progress_apply(lambda row:int(str(row).split('.')[-1]))\n",
    "for col in ['city', 'prodName', 'color', 'color_last', 'os', 'ct']:\n",
    "    feature[col] = feature[col].map(feature[col].value_counts().rank()/len(feature[col].unique()))\n",
    "feature.to_csv('feature/f2.csv', index=False)\n",
    "feature"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 5000000/5000000 [00:12<00:00, 403278.34it/s]\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>active_len</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>21</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>16</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>45</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>18</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>26</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>12</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>12</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>33</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>21</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>30</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>13</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>40</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>21</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>39</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>29</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>28</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>34</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20</th>\n",
       "      <td>33</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>21</th>\n",
       "      <td>34</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>22</th>\n",
       "      <td>7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>23</th>\n",
       "      <td>44</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>24</th>\n",
       "      <td>11</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25</th>\n",
       "      <td>12</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>26</th>\n",
       "      <td>47</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>27</th>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>28</th>\n",
       "      <td>27</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>29</th>\n",
       "      <td>20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4999970</th>\n",
       "      <td>18</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4999971</th>\n",
       "      <td>8</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4999972</th>\n",
       "      <td>81</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4999973</th>\n",
       "      <td>51</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4999974</th>\n",
       "      <td>39</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4999975</th>\n",
       "      <td>23</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4999976</th>\n",
       "      <td>38</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4999977</th>\n",
       "      <td>12</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4999978</th>\n",
       "      <td>82</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4999979</th>\n",
       "      <td>19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4999980</th>\n",
       "      <td>21</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4999981</th>\n",
       "      <td>21</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4999982</th>\n",
       "      <td>7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4999983</th>\n",
       "      <td>10</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4999984</th>\n",
       "      <td>19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4999985</th>\n",
       "      <td>129</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4999986</th>\n",
       "      <td>38</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4999987</th>\n",
       "      <td>78</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4999988</th>\n",
       "      <td>31</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4999989</th>\n",
       "      <td>11</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4999990</th>\n",
       "      <td>47</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4999991</th>\n",
       "      <td>27</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4999992</th>\n",
       "      <td>14</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4999993</th>\n",
       "      <td>27</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4999994</th>\n",
       "      <td>27</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4999995</th>\n",
       "      <td>35</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4999996</th>\n",
       "      <td>51</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4999997</th>\n",
       "      <td>36</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4999998</th>\n",
       "      <td>33</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4999999</th>\n",
       "      <td>48</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5000000 rows × 1 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "         active_len\n",
       "0                 6\n",
       "1                21\n",
       "2                16\n",
       "3                45\n",
       "4                18\n",
       "...             ...\n",
       "4999995          35\n",
       "4999996          51\n",
       "4999997          36\n",
       "4999998          33\n",
       "4999999          48\n",
       "\n",
       "[5000000 rows x 1 columns]"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "id_label_data = get_age_data()\n",
    "tqdm.pandas('获取特征')\n",
    "# 用户基础特征\n",
    "data = get_user_app_actived()\n",
    "data = pd.merge(id_label_data, data, on='uId', how='left')\n",
    "feature = pd.DataFrame()\n",
    "feature['active_len'] = data['appId'].progress_apply(lambda row:len(str(row).split('#')))\n",
    "feature.to_csv('feature/f3.csv', index=False)\n",
    "feature"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      " 60%|██████    | 3/5 [22:23<14:42, 441.09s/it]"
     ]
    }
   ],
   "source": [
    "# f4 大表特征集 period\n",
    "packtime_all = get_user_app_usage(less_data=False)\n",
    "packtime_all.columns = ['device_id', 'app', 'peroid', 'times', 'start']\n",
    "\n",
    "train_data = pd.read_csv(path + 'age_train.csv', header=None)\n",
    "test_data = pd.read_csv(path + 'age_test.csv', header=None)\n",
    "del train_data[1]\n",
    "train_data.columns = ['device_id']\n",
    "test_data.columns = ['device_id']\n",
    "\n",
    "d1 = train_data[:500000]\n",
    "d2 = train_data[500000:1000000]\n",
    "d3 = train_data[1000000:1500000]\n",
    "d4 = train_data[1500000:]\n",
    "d5 = test_data\n",
    "\n",
    "df_value = []\n",
    "for i in tqdm([d1, d2, d3, d4, d5]):\n",
    "    packtime = pd.merge(i, packtime_all, on='device_id', how='left')\n",
    "    packtime = packtime.fillna(0)\n",
    "    packtime['app'] = packtime['app'].astype(str)\n",
    "    packtime['start'] = pd.to_datetime(packtime['start'])\n",
    "    packtime['date'] = packtime['start'].dt.date\n",
    "    packtime['dayofweek'] = packtime['start'].dt.dayofweek\n",
    "    #平均每天使用设备时间\n",
    "    dtime = packtime.groupby(['device_id', 'date'])['peroid'].agg('sum')\n",
    "    #不同时间段占比\n",
    "    wtime = packtime.groupby(['device_id', 'dayofweek'])['peroid'].agg('sum')\n",
    "    atime = packtime.groupby(['device_id', 'app'])['peroid'].agg('sum')\n",
    "\n",
    "    dapp = packtime[['device_id', 'date', 'app']].drop_duplicates().groupby(\n",
    "        ['device_id', 'date'])['app'].agg(' '.join)\n",
    "    dapp = dapp.reset_index()\n",
    "    dapp['app_len'] = dapp['app'].apply(lambda x: x.split(' ')).apply(len)\n",
    "    dapp_stat = dapp.groupby('device_id')['app_len'].agg(\n",
    "        {'std': 'std', 'mean': 'mean', 'max': 'max'})\n",
    "    dapp_stat = dapp_stat.reset_index()\n",
    "    dapp_stat.columns = ['device_id', 'app_len_std', 'app_len_mean', 'app_len_max']\n",
    "\n",
    "    dtime = dtime.reset_index()\n",
    "    dtime_stat = dtime.groupby(['device_id'])['peroid'].agg(\n",
    "        {'sum': 'sum', 'mean': 'mean', 'std': 'std', 'max': 'max'}).reset_index()\n",
    "    dtime_stat.columns = ['device_id', 'date_sum',\n",
    "                          'date_mean', 'date_std', 'date_max']\n",
    "\n",
    "    wtime = wtime.reset_index()\n",
    "    weektime = wtime.pivot(\n",
    "        index='device_id', columns='dayofweek', values='peroid').fillna(0)\n",
    "    weektime.columns = ['w0', 'w1', 'w2', 'w3', 'w4', 'w5', 'w6']\n",
    "    weektime.reset_index(inplace=True)\n",
    "\n",
    "    atime = atime.reset_index()\n",
    "    app = atime.groupby(['device_id'])['peroid'].idxmax()\n",
    "\n",
    "    user = pd.merge(dapp_stat, dtime_stat, on='device_id', how='left')\n",
    "    user = pd.merge(user, weektime, on='device_id', how='left')\n",
    "    user = pd.merge(user, atime.iloc[app], on='device_id', how='left')\n",
    "    del user['device_id']\n",
    "    df_value.append(user)\n",
    "    gc.collect()\n",
    "del packtime_all\n",
    "feature = pd.concat([df_value[0], df_value[1], df_value[2], df_value[3], df_value[4]], axis=0, sort=False)\n",
    "from sklearn.preprocessing import LabelEncoder\n",
    "feature['app'] = LabelEncoder().fit_transform(feature['app'])\n",
    "feature.to_csv('feature/f4.csv', index=False)\n",
    "feature"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# f5\n",
    "packtime_all = get_user_app_usage(less_data=False)\n",
    "packtime_all.columns = ['device_id', 'app', 'abcd', 'peroid', 'start']\n",
    "\n",
    "train_data = pd.read_csv(path + 'age_train.csv', header=None)\n",
    "test_data = pd.read_csv(path + 'age_test.csv', header=None)\n",
    "del train_data[1]\n",
    "train_data.columns = ['device_id']\n",
    "test_data.columns = ['device_id']\n",
    "\n",
    "d1 = train_data[:500000]\n",
    "d2 = train_data[500000:1000000]\n",
    "d3 = train_data[1000000:1500000]\n",
    "d4 = train_data[1500000:]\n",
    "d5 = test_data\n",
    "\n",
    "df_value = []\n",
    "for i in tqdm([d1, d2, d3, d4, d5]):\n",
    "    packtime = pd.merge(i, packtime_all, on='device_id', how='left')\n",
    "    packtime = packtime.fillna(0)\n",
    "    packtime['app'] = packtime['app'].astype(str)\n",
    "    packtime['start'] = pd.to_datetime(packtime['start'])\n",
    "    packtime['date'] = packtime['start'].dt.date\n",
    "    packtime['dayofweek'] = packtime['start'].dt.dayofweek\n",
    "    #平均每天使用设备时间\n",
    "    dtime = packtime.groupby(['device_id', 'date'])['peroid'].agg('sum')\n",
    "    #不同时间段占比\n",
    "    wtime = packtime.groupby(['device_id', 'dayofweek'])['peroid'].agg('sum')\n",
    "    atime = packtime.groupby(['device_id', 'app'])['peroid'].agg('sum')\n",
    "\n",
    "    dapp = packtime[['device_id', 'date', 'app']].drop_duplicates().groupby(\n",
    "        ['device_id', 'date'])['app'].agg(' '.join)\n",
    "    dapp = dapp.reset_index()\n",
    "    dapp['app_len'] = dapp['app'].apply(lambda x: x.split(' ')).apply(len)\n",
    "    dapp_stat = dapp.groupby('device_id')['app_len'].agg(\n",
    "        {'std': 'std', 'mean': 'mean', 'max': 'max'})\n",
    "    dapp_stat = dapp_stat.reset_index()\n",
    "    dapp_stat.columns = ['device_id', 'app_len_std', 'app_len_mean', 'app_len_max']\n",
    "\n",
    "    dtime = dtime.reset_index()\n",
    "    dtime_stat = dtime.groupby(['device_id'])['peroid'].agg(\n",
    "        {'sum': 'sum', 'mean': 'mean', 'std': 'std', 'max': 'max'}).reset_index()\n",
    "    dtime_stat.columns = ['device_id', 'date_sum',\n",
    "                          'date_mean', 'date_std', 'date_max']\n",
    "\n",
    "    wtime = wtime.reset_index()\n",
    "    weektime = wtime.pivot(\n",
    "        index='device_id', columns='dayofweek', values='peroid').fillna(0)\n",
    "    weektime.columns = ['w0', 'w1', 'w2', 'w3', 'w4', 'w5', 'w6']\n",
    "    weektime.reset_index(inplace=True)\n",
    "\n",
    "    atime = atime.reset_index()\n",
    "    app = atime.groupby(['device_id'])['peroid'].idxmax()\n",
    "\n",
    "    user = pd.merge(dapp_stat, dtime_stat, on='device_id', how='left')\n",
    "    user = pd.merge(user, weektime, on='device_id', how='left')\n",
    "    user = pd.merge(user, atime.iloc[app], on='device_id', how='left')\n",
    "    \n",
    "    df_value.append(user)\n",
    "    gc.collect()\n",
    "del packtime_all\n",
    "feature = pd.concat([df_value[0], df_value[1], df_value[2], df_value[3], df_value[4]], axis=0, sort=False)\n",
    "from sklearn.preprocessing import LabelEncoder\n",
    "feature['app'] = LabelEncoder().fit_transform(feature['app'])\n",
    "del feature['app_len_std'], feature['app_len_mean'], feature['app_len_max'], feature['device_id']\n",
    "new_columns = []\n",
    "for i in feature.columns:\n",
    "    new_columns.append(i + '_times')\n",
    "feature.columns = new_columns\n",
    "feature.to_csv('feature/f5.csv', index=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-08-03T10:26:38.500877Z",
     "start_time": "2019-08-03T10:18:19.715082Z"
    }
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-08-03T06:13:25.695909Z",
     "start_time": "2019-08-03T06:07:57.435338Z"
    }
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-08-03T05:21:54.788403Z",
     "start_time": "2019-08-03T05:21:41.798349Z"
    }
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-08-03T05:22:00.388370Z",
     "start_time": "2019-08-03T05:22:00.371131Z"
    }
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
